<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>new运算符</title>
    <script>
        /* 
            new 运算符就是创建对象时要使用的运算符
            使用new时，到底发生了什么事？

            1.当一个函数被new调用时，这个函数将会作为构造函数被使用，会创建一个普通的JS对象（newInstance）
            2.将构造函数的prototype属性指定为新对象的原型
            3.使用实参来构造函数，并将其设置为函数中的this
            4.如果构造函数的返回值是一个非原始值，则这个值会作为new运算的返回值返回
                 如果构造函数的返回值是一个原始值或者没有指定返回值，则新的对象就会被作为返回值返回。(也就是构造函数不写返回值，返回一个新的对象)



                 
            new的执行流程（自己理解的版本）

            1.会在你声明的类里面创建一个新的对象
            2.将声明的类的prototype属性赋值给新建的对象的原型.
            3.执行构造函数，并且将构造函数中的this指向新建的对象。
            4.最后看返回值，如果没有返回值，则返回这个新建的对象。
        */
        function MyClass() {
            var newInstance = {}
            newInstance.__proto__ = MyClass.prototype

        }
        const my = new MyClass()

        console.log(my)
    </script>
</head>

<body>

</body>

</html>